package my_enum;

/**
 * 自定义枚举类 :
 *      方式一：jdk5以前，自定义枚举类
 *      方式二：jdk5以后，使用enum关键字定义枚举类
 *
 * 如何使用枚举类 :
 *      当需要定义一组常量的时候，强烈建议使用枚举类
 */
public class CustomizeEnumTest{
    public static void main(String[] args) {
        SessionOfEnum session = SessionOfEnum.session_1;
        System.out.println(session);
        System.out.println(session.getName());
    }

}

//自定义枚举类
class  SessionOfEnum {

    //注意final变量必须给出初始化值，可以在构造方法，代码块，等里面初始化，注意不能使用无参构造方法，否则会报错
    private final String name;
    private final Integer age;


    //私有化构造器，注意不能使用无参构造方法，否则会报错，因为无参构造方法不会给final变量初始化
    private SessionOfEnum(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    //定义几个本类的静态实例对象
    public static final SessionOfEnum session_1 = new SessionOfEnum("张三",21);
    public static final SessionOfEnum session_2 = new SessionOfEnum("张四",22);
    public static final SessionOfEnum session_3 = new SessionOfEnum("张五",23);
    public static final SessionOfEnum session_4 = new SessionOfEnum("张六",25);

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "SessionOfEnum{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
